using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;
using Common; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using SystemFrameworks;

namespace MinCultura.Sipa.EntidadesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS
	/// </summary>
	public class InfraestructuraEntidadesCaracteristicasEspecificas 
	{
		#region Private Data Access Atributes

		private const String INF_ID_PARAM = "@INF_ID";
		private const String TIN_ID_PARAM = "@TIN_ID";
		private const String INF_AFORO_PARAM = "@INF_AFORO";
		private const String INF_METROS_CONSTRUCCION_PARAM = "@INF_METROS_CONSTRUCCION";
		private const String INF_OCUPA_BIC_PARAM = "@INF_OCUPA_BIC";
		private const String AMD_ID_PARAM = "@AMD_ID";

		#endregion Private Data Access Atributes

		/// <summary>
		/// Constructor de la clase ARTINFRAESTRUCTURAENTIDADESCARACTERISTICASESPECIFICAS
		/// </summary>
        public InfraestructuraEntidadesCaracteristicasEspecificas(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

		public InfraestructuraEntidadesCaracteristicasEspecificasData BuscarInfraestructuraEntidadesCaracteristicasEspecificas()
		{
			InfraestructuraEntidadesCaracteristicasEspecificasData response = new InfraestructuraEntidadesCaracteristicasEspecificasData();
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", response);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}


		public InfraestructuraEntidadesCaracteristicasEspecificasData ConsultarInfraestructuraEntidadesCaracteristicasEspecificas(decimal parINF_ID)
		{
			InfraestructuraEntidadesCaracteristicasEspecificasData response = new InfraestructuraEntidadesCaracteristicasEspecificasData();

			SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);

			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public void AdicionarInfraestructuraEntidadesCaracteristicasEspecificas(InfraestructuraEntidadesCaracteristicasEspecificasData datos)
		{
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(TIN_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.TIN_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(INF_AFORO_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_AFORO_FIELD]);
					SqlParameter param4 = new SqlParameter(INF_METROS_CONSTRUCCION_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_METROS_CONSTRUCCION_FIELD]);
					SqlParameter param5 = new SqlParameter(INF_OCUPA_BIC_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_OCUPA_BIC_FIELD]);
					SqlParameter param6 = new SqlParameter(AMD_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.AMD_ID_FIELD]);
					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6};

					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", parameters);
				}
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), ex);
			}
		}

		public void ActualizarInfraestructuraEntidadesCaracteristicasEspecificas(InfraestructuraEntidadesCaracteristicasEspecificasData datos)
		{
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(TIN_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.TIN_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(INF_AFORO_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_AFORO_FIELD]);
					SqlParameter param4 = new SqlParameter(INF_METROS_CONSTRUCCION_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_METROS_CONSTRUCCION_FIELD]);
					SqlParameter param5 = new SqlParameter(INF_OCUPA_BIC_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.INF_OCUPA_BIC_FIELD]);
					SqlParameter param6 = new SqlParameter(AMD_ID_PARAM, row[InfraestructuraEntidadesCaracteristicasEspecificasData.AMD_ID_FIELD]);

					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6};
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", parameters);
				}
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), ex);
			}
		}

		/// <summary>
		/// Elimina un registro de la entidad Artinfraestructuraentidadescaracteristicasespecificas
		/// </summary>
		/// <param name="Id">Identificador del registro
		public void EliminarInfraestructuraEntidadesCaracteristicasEspecificas(decimal parINF_ID)
		{
			try
			{
				SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);

				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", parameters);
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), ex);
			}
		}

		public void EliminarInfraestructuraEntidadesCaracteristicasEspecificas(ArrayList arrIDs)
		{
			SqlConnection objConnection = new SqlConnection(ConnectionString);
			objConnection.Open();
			SqlTransaction objTrans = objConnection.BeginTransaction();

			try
			{
				foreach (object Item in arrIDs)
				{
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, decimal.Parse(Item.ToString()));
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", parameters);
				}
				objTrans.Commit();
			}
			catch (SqlException sqlEx)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), sqlEx);
			}
			catch (Exception ex)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS"), ex);
			}
			finally
			{
				objConnection.Close();
			}
		}
	}
}